home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
c
/
lib_dos.exe
/
INDEX.H
next >
Wrap
C/C++ Source or Header
|
1989-09-17
|
5KB
|
169 lines
#define BLANK ' '
/* type of indexed find */
#define FIND_FIRST 0
#define FIND_NEXT 1
#define FIND_PREV 2
#define FIND_LAST 3
/* find condition */
#define FIND_EQL 0
#define FIND_GTR 1
#define FIND_LSS 2
#define FIND_NEQ 3
#define FIND_GEQ 4
#define FIND_LEQ 5
/* function returns */
#define OK 0
#define OPEN_ERROR -2
#define IX_IO_ERR -1
#define IX_ERR 1
#define NOT_FOUND 2
#define NO_MORE 3
#define INV_PARAM 5
#define INV_NUM_KEYS 6
/* index record length,
number bytes available for keys,
minimum number of keys acceptable */
#define REC_LENGTH 2048
#define KEY_BYTES 2036
#define MIN_NUM_KEYS 4
/* data_type */
#define ftCHAR 0
#define ftUCHAR 1
#define ftSCHAR 2
#define ftUNS_INT 3
#define ftINT 4
#define ftULONG 5
#define ftLONG 6
#define ftFLOAT 7
#define ftDOUBLE 8
#define ftH_BCD_1 50
#define ftH_BCD_2 51
#define ftH_BCD_3 52
#define ftH_BCD_4 53
#define ftH_BCD_5 54
#define ftH_BCD_6 55
#define ftH_BCD_7 56
#define ftH_BCD_8 57
#define ftH_BCD_9 58
#define ftH_BCD_10 59
#define ftT_BCD_1 60
#define ftT_BCD_2 61
#define ftT_BCD_3 62
#define ftT_BCD_4 63
#define ftT_BCD_5 64
#define ftT_BCD_6 65
#define ftT_BCD_7 66
#define ftT_BCD_8 67
#define ftT_BCD_9 68
#define ftT_BCD_10 69
#define ftSTRUCT 127
#define LEVEL_0 0
#define LEVEL_1 1
#define LEVEL_2 2
#define EQUAL 0
#define GREATER 1
#define LESS 2
#define FLD_TYP(x) ((x & 0x80)?0:x)
#define KEY_LNG(x,y) (FLD_LENG (x,y) + sizeof (long))
#define KEY_lng(x) (x + sizeof (long))
#define NUM_KEY(x,y) (KEY_BYTES / KEY_LNG(x,y) )
#define NUM_key(x) (KEY_BYTES / x)
#define KEY_POS(i,x,y) (i * KEY_LNG (x,y) )
#define KEY_pos(i,x) (i * x)
#define SET_KEY(key,ix_rec,x,y,z) key=(KEY *)(&(ix_rec->keys[KEY_POS(x,y,z)]))
#define SET_key(key,ix_rec,x,y) key=(KEY *)(&(ix_rec->keys[KEY_pos(x,y)]))
typedef struct
{
char level;
unsigned char data_type;
int num_keys;
long next;
long prev;
char keys[KEY_BYTES];
} IX_REC;
typedef struct
{
long avail_boc;
long level0_boc;
long level0_eoc;
char filler [KEY_BYTES];
} BOF;
typedef union VALue VALUE;
typedef struct
{
unsigned char data_type; /* data storage type */
VALUE *val; /* value of the item */
} KEY_COMPONENT;
typedef struct
{
unsigned char num_keys; /* number of keys */
KEY_COMPONENT key [10]; /* up to ten keys */
} KEY_STRUCT;
union VALue
{
char wdCHAR [128];
unsigned short wdUINT;
short wdINT;
long wdLONG;
float wdFLOAT;
double wdDOUBLE;
unsigned char wdUCHR;
signed char wdSCHR;
unsigned long wdULONG;
KEY_STRUCT KSTRUCT;
};
typedef struct
{
long ptr_down;
VALUE value;
} KEY;
typedef struct
{
long data_rec; /* returned record # for user */
long recno[3]; /* record # for all 3 index levels */
int ix[3]; /* index for all 3 levels */
unsigned char data_type; /* data storage type */
unsigned char find_type; /* FIND_EQL, FIND_GTR, FIND_LSS,
FIND_NEQ, FIND_GEQ, FIND_LEQ */
VALUE *val; /* original key argument */
int fn; /* file number */
} FIND_IX;
int IX_get_down (IX_REC *, IX_REC *, int, int, VALUE *);
int IX_get_rec (long, IX_REC *, int);
int IX_put_rec (long, IX_REC *, int);
int IX_get_BOF (int);
int IX_put_BOF (int);
int IX_compare_struct (IX_REC *, VALUE *, int, int, unsigned char, int);
int IX_compare (IX_REC *, VALUE *, int);
int IX_compare_rec (IX_REC *, VALUE *, int *);
int IX_compare_EQL (IX_REC *, VALUE *, int *);
int IX_compare_L2 (IX_REC *, VALUE *, int, long);
int IX_compare_L2_EQL (IX_REC *, VALUE *, int *, long);
int IX_compare_L0 (IX_REC *, VALUE *, long *, int *, int);
int IX_compare_L0_EQL (IX_REC *, VALUE *, long *, int *, int);
int FLD_LENG (unsigned char, VALUE *);
int COPY_KEY (char *, VALUE *, unsigned char);
int IX_add (long, char *, unsigned char, int);
int IX_del (char *, long, unsigned char, int);
int IX_find_first (FIND_IX *, char *, int, int, unsigned char);
int IX_find_last (FIND_IX *, char *, int, int, unsigned char);
int IX_find_next (FIND_IX *);
int IX_find_prev (FIND_IX *);